﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGERP_Entidades;
using SIGERP_Negocio;

namespace SIGERP_Presentacion
{
    public partial class frmCiudadAgregar : Form
    {
        ErrorProvider CiudaderrPro = new ErrorProvider();
        ErrorProvider CodigoPostalerrPro = new ErrorProvider(); 
        ErrorProvider PaiserrPro = new ErrorProvider();
        ErrorProvider ProvinciaerrPro = new ErrorProvider();

        public frmCiudadAgregar()
        {
            InitializeComponent();
        }

        private void frmCiudadAgregar_Load(object sender, EventArgs e)
        {
            List<Pais> paises = Paises.GetAll();
            foreach (Pais p in paises) {
                cmbPais.Items.Add(p);
            }
            //if (cmbPais.Items.Count > 0) 
            cmbPais.SelectedIndex = -1;
        }

        private void btnGuardar_Click_1(object sender, EventArgs e)
        {
            bool flag1 = false;
            bool flag2 = false;
            bool flag3 = false;
            bool flag4 = false;
            bool flag5 = false;
            
            CiudaderrPro.SetError(txtCiudad, "");
            CiudaderrPro.BlinkRate = 0;
            CodigoPostalerrPro.SetError(txtCodigoPostal, "");
            CodigoPostalerrPro.BlinkRate = 0;
            PaiserrPro.SetError(cmbPais, "");
            PaiserrPro.BlinkRate = 0;
            ProvinciaerrPro.SetError(cmbProvincia,"");
            ProvinciaerrPro.BlinkRate = 0;

            // Validar que los campos obligatorios no esten vacio
            if (txtCiudad.Text.Length == 0)
            { CiudaderrPro.SetError(txtCiudad, "Debe ingresar el nombre de la ciudad."); }
            else
            { flag1 = true; }

            // NO ES OBLIG.
            //if (txtCodigoPostal.Text.Length == 0)
            //{ CodigoPostalerrPro.SetError(txtCodigoPostal, "Debe ingresar el codigo postal."); }
            //else
            //{ flag2 = true; }

            if (esNumerico())
            { CodigoPostalerrPro.SetError(txtCodigoPostal, "Tiene que ser numerico"); }
            else
            { flag3 = true; }

            // Validar si se selecciono una Pais
            if (cmbPais.SelectedItem == null)
            { PaiserrPro.SetError(cmbPais, "Debe seleccionar un pais."); }
            else
            { flag4 = true; }

            // Validar si se selecciono una Provincia
            if (cmbProvincia.SelectedItem == null)
            { ProvinciaerrPro.SetError(cmbProvincia, "Debe seleccionar una provincia."); }
            else
            { flag5 = true; }

            if ((flag1 == true) & (flag2==true) & (flag3 == true) & (flag4 == true) & (flag5==true))
            {
                //Validar que no se haya ya ingresado la ciudad 
                if ((Ciudades.Existe(txtCiudad.Text.ToUpper(),((Provincia)cmbProvincia.SelectedItem).ID )).Count() != 0)
                {
                    MessageBox.Show("La ciudad ingresada ingresada ya existe", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
                }
                else
                {
                    Ciudad ciudad = new Ciudad();
                    ciudad.Descripcion = txtCiudad.Text.ToUpper();
                    ciudad.cod_postal = Convert.ToInt32(txtCodigoPostal.Text);
                    ciudad.provincia = (Provincia)cmbProvincia.SelectedItem;
                    Ciudades.Agregar(ciudad);
                    Close();
                }
            }
        }
        
        private void cmbPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbProvincia.Items.Clear();
            List<Provincia> provincias = Provincias.GetAllProvinciasPorPais((Pais)cmbPais.SelectedItem);
            foreach (Provincia p in provincias)
            {
                cmbProvincia.Items.Add(p);
            }
            //if (cmbProvincia.Items.Count > 0)
            cmbProvincia.SelectedIndex = -1;
        }

        private void btnCancelar_Click_1(object sender, EventArgs e)
        {
            Close();
        }

        private bool esNumerico()
        {
            bool rta = false;
            try
            {
                Double aux = Convert.ToDouble(txtCodigoPostal.Text);
            }
            catch (Exception)
            {
                rta = true;
            }
            return rta;
        }
}}
